#include <stdio.h>
#include <string.h>
#include <stdlib.h>

typedef struct nodo_t {
    char label;
    short int fin;
    struct nodo_t *letras[27];
} nodo_t;


void recorrer_arbol(nodo_t* raiz);
nodo_t* insertar (char *palabra, nodo_t** nodo ); 
nodo_t* crea_arbol();

int main()
{
    nodo_t* raiz;
    char palabra_m[50]="ANA";

    raiz = NULL;
    raiz=crea_arbol();
    printf("main: raiz->letras[0]=%p\n",raiz->letras[0]);
    insertar(palabra_m,&(raiz->letras[palabra_m[0]-65]));
    printf("main: Label = %c\n",raiz->label);
    printf("main: raiz->letras[0]=%p\n",raiz->letras[0]);
	 printf("main: PtoRaiz = %pi\n", raiz);
    recorrer_arbol(raiz);

    return 0;
}

nodo_t* crea_arbol()
{
    nodo_t* raiz;
    short int i;

    raiz = (nodo_t*)malloc(sizeof(nodo_t));
    for (i=0; i<27; i++)
        raiz->letras[i]=NULL;
    raiz->label='0';

    printf("label= %c\n",raiz->label);
    return raiz;

}

nodo_t* insertar (char *palabra, nodo_t** nodo ) 
{
    short int i;
	 nodo_t * aux= *nodo;

    if (palabra[1]=='\0') {
        aux=(nodo_t*)malloc(sizeof(nodo_t));
        for (i=0; i<27; i++)
            aux->letras[i]=NULL;
        aux->label=palabra[0];
        printf("%c\n",aux->label);
        aux->fin = 1;
        printf("voy a asignar palabra[%c-%i] = %pi\n",aux->label, palabra[0]-65, aux);
    } else {
        aux=(nodo_t*)malloc(sizeof(nodo_t));
        for (i=0; i<27; i++)
            aux->letras[i]=NULL;
        aux->label=palabra[0];
        printf("%c\n",aux->label);
        aux->fin=0;
        palabra++;
        aux->letras[palabra[0]-65]=insertar(palabra,&(aux->letras[palabra[0]-65]));
        printf("voy a asignar palabra[%c-%i] = %pi\n",aux->label, palabra[0]-65, aux);
    }
    return aux;
}

void recorrer_arbol(nodo_t* raiz)
{
   printf("raPtoRaiz = %pi\n", raiz);
   printf("raPtoRaizA = %pi\n", raiz->letras[0]);
	nodo_t* nodo_aux = raiz->letras[0];
	int i;
	printf("raLETRA = %c", nodo_aux->label);

	for (i=0;i<27;i++) {
		if ( raiz->letras[i] != NULL ) {
			printf("raLETRA = %c", raiz->letras[i]->label);
			recorrer_arbol(raiz->letras[i]);
		}
	}


   /* printf("Es raiz?=%c\n", raiz->label);
    nodo_t* nodo_actual;
    short int i=0;
    nodo_actual = raiz;
    printf("nodo_actual->letras[0]=%p\n",nodo_actual->letras[0]);

    while (nodo_actual->letras[i] == NULL)
    {
        i++;

    }
    printf("i=%i\n", i);
    nodo_actual=nodo_actual->letras[0];
    char c = nodo_actual->label;
    printf("LETRA= %c\n",c);*/
	
}
